Ordeningsoperatoren
Home

Ordeningsoperatoren

Ordeningsoperatoren

De ordeningsquery retourneert evenveel elementen als input-sequentie, maar dan in een (mogelijk) andere volgorde.

OrderBy

De OrderBy queryoperator sorteert de ingevoerde sequentie door de elementen in de invoersequentie met elkaar te vergelijken volgens een specifieke sleutel.

De volgende code toont het sorteren van een eenvoudige invoerreeks van strings. In dit voorbeeld is de sleutel een property die door de lambda expressie x => x.Name of x => x.Leeftijd gespecificeerd wordt.

De volgende code rangschikt de personen eerst op naam en daarna op leeftijd:

Personen[] personen =
{
    new Personen { Name = "Jan", Leeftijd = 60 },
    new Personen { Name = "An", Leeftijd = 100 },
    new Personen { Name = "Peter", Leeftijd = 15 },
    new Personen { Name = "Hans", Leeftijd = 11 },
    new Personen { Name = "Marijke", Leeftijd = 40 },
    new Personen { Name = "Judith", Leeftijd = 20 }
};
IEnumerable<Personen> alfabetischOpNaam =
    personen.OrderBy(x => x.Name);
Console.WriteLine("Alfabetische lijst van personen");
foreach (Personen persoon in alfabetischOpNaam)
{
    Console.WriteLine(persoon.Name);
}
IEnumerable<Personen> alfabetischOpLeeftijd =
    personen.OrderBy(x => x.Leeftijd);
Console.WriteLine("Personen gerangschikt op leeftijd");
foreach (Personen persoon in alfabetischOpLeeftijd)
{
    Console.WriteLine(persoon.Name);
}

ThenBy

De ThenBy queryoperator kan één of meerdere keren na een eerste OrderyBy worden toegevoegd. De ThenBy operator voegt extra niveaus toe aan het sorteren. In de volgende code worden de Personen eerst per leeftijd en dan alfabetisch geordend.

Personen[] personen =
{
    new Personen { Name = "Jan", Leeftijd = 60 },
    new Personen { Name = "An", Leeftijd = 100 },
    new Personen { Name = "Peter", Leeftijd = 15 },
    new Personen { Name = "Dirk", Leeftijd = 15 },
    new Personen { Name = "Hans", Leeftijd = 11 },
    new Personen { Name = "Olga", Leeftijd = 11 },
    new Personen { Name = "Marijke", Leeftijd = 40 },
    new Personen { Name = "Yannick", Leeftijd = 40 },
    new Personen { Name = "Judith", Leeftijd = 20 }
};
IEnumerable<Personen> alfabetischOpLeeftijdDanOpNaam =
personen.OrderBy(x => x.Leeftijd).ThenBy(x => x.Name);
Console.WriteLine("Lijst op leeftijd en dan alfabetische op naam:");
foreach (Personen persoon in alfabetischOpLeeftijdDanOpNaam)
{
    Console.WriteLine("{0} {1}", persoon.Leeftijd, persoon.Name);
}

OrderByDescending

De OrderByDescending queryoperator werkt op dezelfde manier als de OrderBy operator, met dien verstande dat de resultaten worden geretourneerd in de omgekeerde volgorde,

ThenByDescending

De ThenByDescending queryperator werkt op dezelfde manier als de ThenBy operator, maar retourneert de resultaten in de omgekeerde sorteervolgorde.

JI
2018-01-20 15:35:10